package com.charon.common.util.wangyi;

import java.io.UnsupportedEncodingException;

import com.charon.common.config.Global;
import com.charon.common.util.ConnectionHandler;
import com.charon.common.util.StringUtils;

import net.sf.json.JSONObject;

public class WYHandler {
	// 基本URL
	private static String baseUrl = Global.getConfig("wangyi.url");

	/////////////////////////// 歌曲 /////////////////////////////

	/**
	 * @Description: 获取歌曲详情
	 * @Author charon [248135724@qq.com]
	 * @Date: 2018年11月16日 上午5:10:38
	 * @param songID
	 * @return
	 */
	public static JSONObject getSongInfo(String songID) {
		if (!StringUtils.isEmpty(songID))return null;
		String url = baseUrl + "/song/detail?ids=" + songID;
		return ConnectionHandler.getResultJson(url);
	}

	/**
	 * 获取热搜
	 * 
	 * @return
	 */
	public static JSONObject getHotSearch() {
		String url = baseUrl + "/search/hot";
		return ConnectionHandler.getResultJson(url);
	}

	/**
	 * 单搜索，默认每页三十 可选参数 : limit : 返回数量 , 默认为 30 offset : 偏移数量， 用于分页 , 如 : 如 :( 页数
	 * -1)*30, 其中 30 为 limit 的值 , 默认为 0 type: 搜索类型；默认为 1 即单曲 , 取值意义 : 1: 单曲, 10:
	 * 专辑, 100: 歌手, 1000: 歌单, 1002: 用户, 1004: MV, 1006: 歌词, 1009: 电台, 1014: 视频
	 * 
	 * @param keyWords
	 * @param limit
	 *            分页 可为空
	 * @param offset
	 *            偏移量 可为空
	 * @param type
	 *            类型 可为空
	 * @return
	 * @throws UnsupportedEncodingException
	 */
	public static JSONObject searchByType(String keyWords, String limit, String offset, String type)
			throws UnsupportedEncodingException {
		if (!StringUtils.isEmpty(keyWords)) {
			return null;
		}
		String url = baseUrl + "/search?keywords=" + java.net.URLEncoder.encode(keyWords, "utf-8");
		if (StringUtils.isEmpty(limit) && StringUtils.isEmpty(offset)) {
			url += "&limit=" + limit + "&offset=" + offset;
		}
		if (StringUtils.isEmpty(type)) {
			url += "&type=" + type;
		}
		return ConnectionHandler.getResultJson(url);
	}

	/**
	 * 获取MP3URL，音乐播放链接
	 * @param songID
	 * @return
	 */
	public static JSONObject getSongURL(String songID) {
		if (!StringUtils.isEmpty(songID))return null;
		String url = baseUrl + "/song/url?id=" + songID;
		JSONObject obj = ConnectionHandler.getResultJson(url);
		if (obj == null || "".equals(obj.toString())) {
			return null;
		}
		return obj;
	}

	/**
	 * 获取歌词
	 * @param songID
	 * @return
	 */
	public static JSONObject getLrc(String songID) {
		if (!StringUtils.isEmpty(songID))return null;
		String url = baseUrl + "/lyric?id=" + songID;
		return ConnectionHandler.getResultJson(url);
	}

	/////////////////////////// 歌单 /////////////////////////////

	/**
	 * 获取用户歌单
	 * @param userID
	 *            用户ID
	 * @return
	 */
	public static JSONObject getUserSongLists(String userID) {
		if (!StringUtils.isEmpty(userID))return null;
		String url = baseUrl + "/user/playlist?uid=" + userID + "&limit=50";
		return ConnectionHandler.getResultJson(url);
	}

	/**
	 * 根据歌单ID获取歌曲列表
	 * @param listID
	 * @return
	 */
	public static JSONObject getSongList(String listID) {
		if (!StringUtils.isEmpty(listID))return null;
		String url = baseUrl + "/playlist/detail?id=" + listID;
		return ConnectionHandler.getResultJson(url);
	}

	/**
	 * 获取精品歌单
	 * @Description: 可选参数 : cat: tag, 比如 " 华语 "、" 古风 " 、" 欧美 "、" 流行 ", 默认为
	 *               "全部",可从歌单分类接口获取(/playlist/catlist) limit: 取出歌单数量 , 默认为 20
	 *               before: 分页参数,取上一页最后一个歌单的 updateTime 获取下一页数据
	 * @Author charon [248135724@qq.com]
	 * @Date: 2018年11月15日 下午8:24:21
	 * @return
	 */
	public static JSONObject getHighQuality(String limit, String updateTime) {
		String url = baseUrl + "/top/playlist/highquality?limit=" + limit;
		if (StringUtils.isEmpty(updateTime)) {
			url += ("&before=" + updateTime);
		}
		return ConnectionHandler.getResultJson(url);
	}

	/**
	 * 可选参数 : order: 可选值为 'new' 和 'hot', 分别对应最新和最热 , 默认为 'hot' cat:cat: tag, 比如
	 * " 华语 "、" 古风 " 、" 欧美 "、" 流行 ", 默认为 "全部",可从歌单分类接口获取(/playlist/catlist)
	 * 
	 * @Description: 获取网友精选歌单
	 * @Author charon [248135724@qq.com]
	 * @Date: 2018年11月15日 下午8:28:58
	 * @return
	 */
	public static JSONObject getNetFriendLists(String limit) {
		String url = baseUrl + "/top/playlist?limit=" + limit + "&order=hot";
		return ConnectionHandler.getResultJson(url);
	}

	/////////////////////////// 用户 /////////////////////////////

	/**
	 * 通过手机登陆网易云
	 * 
	 * @param phone
	 * @param password
	 * @return
	 */
	public static JSONObject loginWangYiByPhone(String phone, String password) {
		String url = baseUrl + "/login/cellphone?phone=" + phone + "&password=" + password;
		return ConnectionHandler.getResultJson(url);
	}

	/**
	 * 通过邮箱登陆网易云
	 * 
	 * @param email
	 * @param password
	 * @return
	 */
	public static JSONObject loginWangYiByEmail(String email, String password) {
		String url = baseUrl + "/login/cellphone?email=" + email + "&password=" + password;
		return ConnectionHandler.getResultJson(url);
	}

	/**
	 * @Description: 检查歌曲是否有效
	 * @Author charon [248135724@qq.com]
	 * @Date: 2018年11月15日 下午3:18:27
	 * @param songID
	 * @return { success: true, message: 'ok' } 或者 { success: false, message:
	 *         '亲爱的,暂无版权' }
	 */
	public static JSONObject checkSong(String songID) {
		if (!StringUtils.isEmpty(songID))return null;
		String url = baseUrl + "/check/music?id=" + songID;
		return ConnectionHandler.getResultJson(url);
	}

	/**
	 * @Description: 新歌速递
	 * @Author charon [248135724@qq.com]
	 * @Date: 2018年11月15日 下午3:18:27
	 * @param type 类型 （全部:0 华语:7 欧美:96 日本:8 韩国:16）
	 * @param offset 页码
	 * @param limit 每页数量
	 * @return 
	 */
	public static JSONObject getNewSongs(String type, String offset, String limit) {
		if (!StringUtils.isEmpty(type)) {
			type = 0 + "";
		}
		String url = baseUrl + "/top/song?type=" + type;
		if (StringUtils.isEmpty(limit) && StringUtils.isEmpty(offset)) {
			url += "&limit=" + limit + "&offset=" + offset;
		}
		return ConnectionHandler.getResultJson(url);
	}
	
	/**
	 * @Description: 获取歌曲评论 
	 * @author:charon [248135724@qq.com]
	 * @date:   2018年11月24日 上午1:33:22 
	 * @param: @param id 
	 * @param: @param limit 每页数量
	 * @param: @param offset 页码
	 * @return: JSONObject
	 */
	public static JSONObject getComment(String id,String limit,String offset){
		if (!StringUtils.isEmpty(id))return null;
		String url = baseUrl + "/top/song?id=" + id;
		if (!StringUtils.isEmpty(id))return null;
		if (StringUtils.isEmpty(limit) && StringUtils.isEmpty(offset)) {
			url += "&limit=" + limit + "&offset=" + offset;
		}
		return ConnectionHandler.getResultJson(url);
	}
	
	/**
	 * @Description: 获取歌单评论
	 * @author:charon [248135724@qq.com]
	 * @date:   2018年11月24日 上午1:33:22 
	 * @param: @param id 
	 * @param: @param limit 每页数量
	 * @param: @param offset 页码
	 * @return: JSONObject
	 */
	public static JSONObject getCommentPlayList(String id,String limit,String offset){
		if(!StringUtils.isEmpty(id))return null;
		String url = baseUrl + "/comment/playlist?id="+id;
		if (!StringUtils.isEmpty(id))return null;
		if (StringUtils.isEmpty(limit) && StringUtils.isEmpty(offset)) {
			url += "&limit=" + limit + "&offset=" + offset;
		}
		return ConnectionHandler.getResultJson(url);
	}
	
	/**
	 * @Description: 获取热门评论
	 * @Author charon [248135724@qq.com]
	 * @Date:   2018年12月22日 下午5:43:34 
	 * @param id 资源id
	 * @param type 数字,资源类型
	 * 	0:歌曲    1:mv  2:歌单     3:专辑      4:电台       5:视频
	 * @return
	 */
	public static JSONObject getCommentHot(String id,String type){
		if (!StringUtils.isEmpty(id))return null;
		String url = baseUrl + "/comment/hot?id="+id;
		if (StringUtils.isEmpty(type))url += "&type=" +type;
		return ConnectionHandler.getResultJson(url);
	}
	

}
